"""
功能描述 ：
编写人 ：
编写日期 ：
实现逻辑 ：
    1- ......
        1.1- ......
    2- ......
        2.1- ......
"""
# 导包
#     1-确定目标excel文件
#     2-打开目标excel
#     3-确定sheet页
#     4-确定最大的行和列数
#     5-遍历读取所有的行
#         提前定义一个空列表
#         5.1-将第一行作为字典的key
#         5.2-遍历读取剩下的每一行作为value
#         5.3-利用字典推导式合并成字典
#         5.4-将组合后的字典追加到列表中
#         return 列表
import xlrd,os
from common.log import logger
import json
import yaml

class ReadData():
    def __init__(self):
        logger.debug('正在实例化readexcel类')
        # 1 - 确定目标excel文件
        self.excel = os.path.dirname(os.path.dirname(__file__))+r'\testData\data.xls'
        # 2 - 打开目标excel
        self.wd = xlrd.open_workbook(self.excel)
        # 3 - 确定sheet页
        self.sh = self.wd.sheet_by_index(0)
        # 4 - 确定最大的行和列数
        self.rownum = self.sh.nrows
        self.colnum = self.sh.ncols
    def read_excel(self):

# 5 - 遍历读取所有的行
# 提前定义一个空列表
        data = []
        for i  in range(1,self.rownum):
            # 5.1 - 将第一行作为字典的key
            keylist = self.sh.row_values(0)
            # 5.2 - 遍历读取剩下的每一行作为value
            valuelist = self.sh.row_values(i)
            # 5.3 - 利用字典推导式合并成字典
            dict1 = {keylist[j]:valuelist[j] for j in range(len(keylist))}
            # 5.4 - 将组合后的字典追加到列表中
            data.append(dict1)
        logger.debug('返回的测试数据为：%s' % data)
        return data
    def read_json(self):
        # pass
        # 2-获取测试数据路径(json)
        json_path = os.path.dirname(os.path.dirname(__file__))+ r"/testData/data.json"
        # 打开并读取json文件
        f = open(json_path,'r')
        # 将读取的json转化为字典格式
        testdata = json.load(f)
        # 关闭json文件
        f.close()
        # 获取字典内所有的key转化为list数据类型
        testdata = list(testdata.values)
        # 返回组装后的结果
        return testdata

    def read_yaml(self):
        # pass
        # 3-获取测试数据路径(yaml)
        json_path = os.path.dirname(os.path.dirname(__file__))+r"/testData/data.yaml"
        # 打开并读取yaml文件
        f = open(yaml_path,'r')
        # 读取yaml文件并组装数据
        testdata = yaml.load(f,loader=yaml.FullLoader)
        # 关闭yaml文件
        f.close()
        # 返回组装后的结果
        return testdata

if __name__ == '__main__':
    re = ReadData()
    print(re.read_excel())
    print(re.read_json())
    print(re.read_yaml())
